0.1 Data preparation

0.1.3 Clean data and save updated versions as RDS files

search_details <- search_details %>%
  clean_data() %>%
  rename(date_screened = date_screening_in_format_2020_05_22) %>%
  write_rds(here::here('data_clean', 'search_details.rds'))


protect_columns_1 <- names(data_study_general) %in% 'doi'

data_study_general <- data_study_general %>%
  rename('notes' = 11, date_published = `date_published_format(2020-05-12)`) %>%
  clean_data(protect = protect_columns_1) %>%
  mutate(study_id = 1:length(lead_author)) %>%
  write_rds(here::here('data_clean', 'data_study_general.rds'))

review_details <- data_study_general %>%
  select(lead_author, date_published, country, review_version, study_id) %>%
  write_rds(here::here('data_clean', 'review_details.rds'))

table_1 <- table_1 %>%
  clean_data() %>%
  mutate(., lower_range = sub('\\_.*', '', .$range)) %>%
  mutate(., upper_range = sub('.*_', '',.$range,)) %>%
  select(1:9, 22:23, 11:21) %>%
  filter(!is.na(lead_author)) %>%
  left_join(., review_details, by = 'lead_author') %>%
  write_rds(here::here('data_clean', 'table_1.rds'))

table_2 <-  table_2 %>%
  clean_data() %>%
  filter(data_on_testing == TRUE) %>%
  left_join(., review_details, by = 'lead_author') %>%
  write_rds(here::here('data_clean', 'table_2.rds'))

table_3 <-  table_3 %>%
  clean_data() %>%
  filter(data_on_hospitalisation == TRUE) %>%
  left_join(., review_details, by = 'lead_author') %>%
  write_rds(here::here('data_clean', 'table_3.rds'))

table_4 <-  table_4 %>%
  clean_data() %>%
  filter(data_disease_severity == TRUE) %>%
  left_join(., review_details, by = 'lead_author') %>%
  write_rds(here::here('data_clean', 'table_4.rds'))

table_5 <- table_5 %>%
  clean_data() %>%
  filter(data_on_deaths == TRUE) %>%
  left_join(., review_details, by = 'lead_author') %>%
  write_rds(here::here('data_clean', 'table_5.rds'))


protect_columns_2 <- !names(table_6) %in% 'Author'

table_6 <-  table_6 %>%
  clean_data(protect = protect_columns_2) %>%
  left_join(., table_1 %>%
              select(lead_author,
                     not_stated,
                     missing,
                     total) %>%
              rename('author' = lead_author),
            by = 'author') %>%
  mutate(missingness = rowSums(.[17:18], na.rm = T),
         missingness_percentage = (missingness/total)*100) %>%
  select(-c(not_stated, missing, total, missingness)) %>%
  write_rds(here::here('data_clean', 'table_6.rds'))

a <- data_study_general %>%
  select(lead_author, date_published, source, study_id) %>%
  rename('Lead Author' = lead_author,
         'Date Published' = date_published,
         'Publication Source' = source,
         'Study ID' = study_id)

a$`Lead Author` <- to_upper_camel_case(a$`Lead Author`, sep_out = ", ")
a$`Publication Source` <- to_title_case(a$`Publication Source`)
a$`Publication Source` <- if_else(str_length(a$`Publication Source`) < 5,
                                  toupper(a$`Publication Source`),
                                  to_title_case(a$`Publication Source`))

a <- flextable(a)%>%
  set_caption(a, caption = 'All studies included in data extraction') %>%
  set_table_properties(width = 1, layout = 'autofit') %>%
  save_as_docx(a, path = here('data_clean', 'all_studies.docx'))

All data has now been stored in .rds format in the /data_clean folder. This can be analysed outside of the report using pre-generated scripts or user created scripts.

0.2 Preparing the descriptive analysis

0.2.2 Filter the included studies

data_study_general <- data_study_general %>%
  filter(review_version %in% analysed_versions) %>%
  filter(!(lead_author %in% exclude_from_analysis)) %>%
  write_csv(., here::here('data_clean', 'data_study_general.csv'))

table_1 <- table_1 %>%
  filter(review_version %in% analysed_versions) %>%
  select(-review_version) %>%
  filter(!(lead_author %in% exclude_from_analysis))

table_2 <- table_2 %>%
  filter(review_version %in% analysed_versions) %>%
  select(-review_version) %>%
  filter(!(lead_author %in% exclude_from_analysis))

table_3 <- table_3 %>%
  filter(review_version %in% analysed_versions) %>%
  select(-review_version) %>%
  filter(!(lead_author %in% exclude_from_analysis))

table_4 <- table_4 %>%
  filter(review_version %in% analysed_versions) %>%
  select(-review_version) %>%
  filter(!(lead_author %in% exclude_from_analysis))

table_5 <- table_5 %>%
  filter(review_version %in% analysed_versions) %>%
  select(-review_version) %>%
  filter(!(lead_author %in% exclude_from_analysis))

table_6 <- table_6 %>%
  filter(!(author %in% exclude_from_qa))

a <- data_study_general %>%
  select(lead_author, date_published, source, study_id) %>%
  rename('Lead Author' = lead_author,
         'Date Published' = date_published,
         'Publication Source' = source,
         'Study ID' = study_id)

a$`Lead Author` <- to_upper_camel_case(a$`Lead Author`, sep_out = ", ")
a$`Publication Source` <- to_title_case(a$`Publication Source`)
a$`Publication Source` <- if_else(str_length(a$`Publication Source`) < 5,
                                  toupper(a$`Publication Source`),
                                  to_title_case(a$`Publication Source`))

a <- flextable(a)%>%
  set_table_properties(width = 1, layout = 'autofit') %>%
  set_caption(caption = 'Studies included in the current analysis')

save_as_docx(a, path = here('data_clean', 'included_studies.docx'))

0.3 Descriptive analysis

0.3.4 We update the number of participants we have included

  • Summary statistics: This table will give us the mean, median and IQR of the samples in the review
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##        7       96      316   199095     1052 17425445
  • The total number of participants
## [1] 20506745

0.3.6 Now about the smoking

  • Smokers
## [1] 69
  • Former smokers
## [1] 32
  • Never smokers
## [1] 30
  • Current/former smokers
## [1] 34
  • Missing, never/unknown and not stated
## [1] 27
## [1] 8
## [1] 64
  • Studies with complete smoking status
Studies with complete smoking status data

Lead author

Sample size

Current smokers

Former smokers

Never smokers

Study ID

Guan, Ni

1099

137

21

927

1

Rentsch

3528

159

179

216

18

Argenziano

1000

49

179

772

29

Hadjadj

50

1

9

40

38

Niedzwiedz

1474

42745

147235

235711

39

Miyara, Updated

479

32

152

286

46

Gaibazzi

441

21

44

376

49

Cho

1331

253

359

719

51

Robilotti

423

9

159

248

53

Opensafely, Collaborative

17425445

2962373

5737545

8000204

54

Shah

316

52

56

133

57

Kolin

1474

213

592

657

59

Feng

476

31

13

410

62

Yanover

4353

514

129

3710

67

Hamer

387109

37426

134855

214828

68

De, Lusignan

3802

413

1753

1125

71

Feuth

28

3

8

17

74

Parrotta

76

2

20

52

76

Ip

2512

77

448

1620

83

Al, Hindawi

31

1

22

8

91

Russell

106

7

26

42

95

Israel

24087

4114

3141

16832

100

Docherty

20133

852

4364

8968

108

Studies with partially complete smoking status (current/former rather than current and former)

Lead author

Sample size

Current/former smokers

Never smokers

Study ID

Guan, Liang

1590

111

1479

2

Richardson

5700

558

3009

31

Rodriguez

7

3

4

35

Zheng, Xiong

73

8

65

45

Giacomelli

233

70

163

56

Palaiodimos

200

65

135

82

Gianfrancesco

600

129

389

97

Studies with incomplete smoking status

Lead author

Sample size

Current smoker

Current/former smokers

Former smoker

Never smokers

Not stated

Missing

Study ID

Lian

788

54

NA

NA

NA

734

NA

3

Jin

651

41

NA

NA

NA

610

NA

4

Chen

548

24

NA

14

NA

510

NA

5

Zhou, Yu

191

11

NA

NA

NA

180

NA

6

Mo

155

6

NA

NA

NA

149

NA

7

Zhang, Dong

140

2

NA

7

NA

131

NA

8

Wan

135

9

NA

NA

NA

126

NA

9

Liu, Tao

78

NA

5

NA

NA

73

NA

10

Huang, Wang

41

3

NA

NA

NA

38

NA

11

Zhang, Cai

645

41

NA

NA

NA

604

NA

12

Guo

187

18

NA

NA

NA

169

NA

13

Liu, Ming

41

4

NA

NA

NA

37

NA

14

Huang, Yang

36

NA

4

NA

NA

32

NA

15

Xu

53

6

NA

NA

NA

47

NA

16

Li

17

3

NA

NA

NA

14

NA

17

Hu

323

NA

38

NA

NA

285

NA

19

Wang, Pan

125

NA

16

NA

NA

109

NA

20

Petrilli

4103

212

NA

666

NA

NA

NA

22

Chow, Us, Cdc

7162

96

NA

165

NA

NA

6901

23

Dong, Cao

9

1

NA

NA

NA

8

NA

25

Kim

28

5

NA

NA

NA

22

1

26

Shi, Yu

487

NA

40

NA

NA

434

13

27

Yang, Yu

52

2

NA

NA

NA

50

NA

28

Solis

650

61

NA

NA

NA

589

NA

30

Fontanet

661

69

NA

NA

NA

NA

NA

32

Zheng, Gao

66

8

NA

NA

NA

58

NA

33

Liao, Feng

1848

NA

8

NA

NA

140

1700

34

Magagnoli

368

NA

52

NA

NA

316

NA

36

Shi, Ren

134

NA

14

NA

NA

120

NA

37

Gold, Us, Cdc

305

16

NA

NA

NA

NA

289

41

Yu, Cai

95

8

NA

NA

NA

87

NA

44

De, La, Rica

48

NA

10

NA

NA

37

1

47

Yin, Yang

106

NA

18

NA

NA

88

NA

48

Shi, Zuo

96

NA

29

NA

NA

67

NA

50

Allenbach

152

NA

10

NA

NA

142

NA

52

Borobia

2226

157

NA

NA

NA

2069

NA

55

Bello, Chavolla

62489

NA

6209

NA

NA

56280

NA

58

Lubetzky

54

NA

12

NA

NA

42

NA

60

Goyal

393

20

NA

NA

NA

373

NA

61

Yao

108

4

NA

NA

NA

NA

104

63

Sami

490

69

NA

NA

NA

NA

NA

64

Almazeedi

1096

44

NA

NA

NA

NA

NA

65

Carrillo, Vega

10544

936

NA

NA

NA

9608

NA

66

Regina

200

9

NA

NA

NA

191

NA

69

Targher

339

28

NA

NA

NA

311

NA

72

Valenti

789

204

NA

NA

NA

585

NA

73

Heng

51

7

NA

NA

NA

44

NA

75

Shekar

50

24

NA

NA

NA

26

NA

77

Mejia, Vilet

329

NA

23

NA

NA

306

NA

78

Chen, Jiang

135

NA

13

NA

NA

122

NA

79

Jiong

1008

57

NA

NA

NA

484

467

80

Rimland

11

1

NA

NA

NA

9

NA

81

Heili, Frades

4712

233

NA

820

NA

NA

526

84

Vaquero, Roncero

146

NA

10

NA

NA

136

NA

85

Kim, Garg

2491

150

NA

642

NA

NA

2

86

Wu

174

NA

58

NA

NA

116

NA

87

Hopkinson

2401982

NA

263257

NA

NA

2138725

NA

88

Shi, Zhao

101

NA

5

NA

NA

96

NA

89

Kimmig

60

NA

22

NA

NA

38

NA

90

Basse

141

25

NA

NA

NA

116

NA

92

Freites

123

4

NA

NA

NA

119

NA

93

Alshami

128

20

NA

3

NA

105

NA

94

Berumen

102875

NA

9921

NA

NA

NA

NA

96

Li, Long

145

NA

8

NA

NA

137

NA

98

Batty

908

102

NA

NA

NA

806

NA

99

Del, Valle

1484

82

NA

346

NA

680

376

101

Zuo, Zuo

44

NA

12

NA

NA

32

NA

102

Chaudhry

40

NA

6

NA

NA

33

1

103

Louis

22

NA

10

NA

NA

12

NA

104

Soto, Mota

400

NA

48

NA

NA

352

NA

105

Patel

104

43

NA

NA

NA

NA

10

106

Garibaldi

832

46

NA

188

NA

598

NA

107

Boulware

821

27

NA

NA

NA

794

NA

109

0.4 Smoking prevalence by country

We have split the data into a list where each country can be analysed separately if required

0.4.1 Graph for smoking prevalence in the countries included

smoking_status <- c('current_smoker', 'former_smoker', 'current_former_smoker', 'never_smoker', 'never_smoker_unknown', 'not_stated', 'missing')

prevalence_plot <- table_1 %>%
  group_by(country) %>%
  rename('sample' = total) %>%
  filter(current_smoker != 'NA') %>%
  replace_na(., list(current_smoker = 0,
                     former_smoker = 0,
                     current_former_smoker = 0,
                     never_smoker = 0,
                     never_smoker_unknown = 0,
                     not_stated = 0,
                     missing = 0)) %>%
  mutate(ever_smoker = former_smoker + current_smoker + current_former_smoker,
         not_stated_missing = missing + not_stated + never_smoker_unknown) %>%
  select(lead_author, country, sample, current_smoker, former_smoker, never_smoker, ever_smoker, not_stated_missing) %>%
  mutate(total = never_smoker + ever_smoker + not_stated_missing) %>%
  mutate(p_current_smoker = current_smoker/total,
         p_ever_smoker = ever_smoker/total,
         p_former_smoker = former_smoker/total,
         p_never_smoker = never_smoker/total,
         p_ever_smoker = ever_smoker/total,
         p_not_stated_missing = not_stated_missing/total,
         p_total = p_ever_smoker + p_never_smoker + p_not_stated_missing) %>%
  mutate(study = 1) %>%
  add_count(country) 


prevalence_plot$country <- as.factor(prevalence_plot$country)

a <- tibble(country = c('china', 'usa', 'uk', 'france', 'mexico', 'spain', 'italy', 'iran', 'israel', 'korea', 'kuwait', 'switzerland'),
            current_smoking_p = c(0.277, 0.138, 0.144, 0.32, 0.166, 0.276, 0.19, 0.101, 0.22, 0.193, 0.225, 0.25),
            former_smoking_p = c(0.04, 0.209, 0.258, 0.314, 0, 0, 0.234, 0, 0, 0, 0, 0),
            study = 0)
country_list_ordered <- sort(a$country)

b <- prevalence_plot %>%
  ungroup() %>%
  mutate(current_smoking_p = p_current_smoker,
         former_smoking_p = p_former_smoker) %>%
  add_row(country = a$country, current_smoking_p = a$current_smoking_p, former_smoking_p = a$former_smoking_p, study = a$study) %>%
  group_by(country) %>%
  filter(country != 'multiple') %>%
  select(country, sample, study, current_smoking_p, former_smoking_p) %>%
  add_count(country)

b$study <- as.factor(b$study)

c <- b %>%
  pivot_longer(., c(current_smoking_p, former_smoking_p), names_to = 'smoking', values_to = 'prevalence') %>%
  filter(prevalence != 0) %>%
  select(-n) %>%
  add_count(country)

c$country <- c$country %>%
  to_upper_camel_case() %>%
  recode('Usa' = 'USA', 'Uk' = 'UK', 'SaudiArabia' = 'Saudi Arabia')

d <- ggplot(c, aes(x = smoking, y = prevalence, fill = study))+
  geom_dotplot(binaxis = 'y', method = 'histodot', stackdir = 'center', binpositions = 'all', dotsize = 1, stackgroups = T)+
  facet_wrap(~reorder(country, -n), nrow = 2)+
  labs(title = 'Smoking prevalence in included studies compared with national prevalence', y = 'Prevalence', fill = '')+
  scale_fill_discrete(labels = c('National prevalence', 'Study population prevalence'))+
  scale_x_discrete(name = 'Smoking status', labels = c('Current', 'Former'))+
  theme_bw()+
  theme(legend.position = 'bottom')

d

0.5 Final results tables and meta-analyses

0.5.1 Table 1: Included studies

#Updating table 1
table_1_word <- table_1 %>%
  mutate(., current_percentage = current_smoker/total*100) %>%
  mutate(., former_percentage = former_smoker/total*100) %>%
  mutate(., current_former_percentage = current_former_smoker/total*100) %>%
  mutate(., never_smoker_percentage = never_smoker/total*100) %>%
  mutate(., never_smoker_unknown_percentage = never_smoker_unknown/total*100) %>%
  mutate(., not_stated_percentage = not_stated/total*100) %>%
  mutate(., missing_percentage = missing/total*100) %>%
  select(lead_author, date_published, country, sample_size, median_age, iqr_lower, iqr_upper, mean_age, lower_range,
         upper_range, standard_deviation, female_sex_percent, current_percentage, former_percentage, current_former_percentage,
         never_smoker_percentage, never_smoker_unknown_percentage, not_stated_percentage, missing_percentage, study_id)

a <- data_study_general %>%
  select(study_id, study_setting)

table_1_word <- left_join(table_1_word, a, by = 'study_id') %>%
  select(1:4, 21, 5:20)
table_1_word$date_published <- as.Date.character(table_1_word$date_published)
write_rds(table_1_word, here::here('data_clean', 'table_1_word.rds'))

table_1_word <- table_1_word %>%
  mutate(median_mean = ifelse(is.na(median_age), mean_age, median_age))


a <- table_1_word %>%
  mutate(median_mean = ifelse(is.na(median_age), mean_age, median_age),
         mean_used = ifelse(is.na(mean_age), '','^'),
         iqr = ifelse(is.na(iqr_lower), NA, paste(iqr_lower, iqr_upper, sep = '-')),
         range_combined = paste(lower_range, upper_range, sep = '-'),
         range_combined = na_if(range_combined, 'NA-NA'),
         st_dev = paste((as.integer(median_mean-standard_deviation)), as.integer((median_mean+standard_deviation)), sep = '-'),
         st_dev = na_if(st_dev, 'NA-NA'))

a$iqr <- coalesce(a$iqr, a$range_combined, a$st_dev)
a$iqr_used <- coalesce(a$range_used, a$st_dev_used)

a <- a %>%
  select(study_id, lead_author, date_published, country, sample_size, study_setting, median_mean, mean_used, iqr,
         female_sex_percent, current_percentage, current_former_percentage, never_smoker_percentage,
         never_smoker_unknown_percentage, not_stated_percentage, missing_percentage) %>%
  mutate(median_mean = paste(median_mean, mean_used, sep = ''),
         median_mean = na_if(median_mean, NA)) %>%
  select(-mean_used) %>%
  mutate(median_mean = ifelse(median_mean == 'NA', 'NA', paste(paste(median_mean, iqr, sep = ' ('),')', sep = ''))) %>%
  select(-iqr) %>%
  rename('Study ID' = study_id,
         'Lead author' = lead_author,
         'Date published' = date_published,
         'Country' = country,
         'Sample size' = sample_size,
         'Study setting' = study_setting,
         'Median (IQR)' = median_mean,
         'Female %' = female_sex_percent,
         'Current smoker %' = current_percentage,
         'Current/former smokers %' = current_former_percentage,
         'Never smokers %' = never_smoker_percentage,
         'Never/unknown smokers %' = never_smoker_unknown_percentage,
         'Not stated %' = not_stated_percentage,
         'Missing %' = missing_percentage)
         
a$`Lead author` <- to_upper_camel_case(a$`Lead author`, sep_out = ", ")
a$`Lead author` <- a$`Lead author` %>%
  recode('Chow, Us, Cdc' = 'Chow (US CDC)',
         "Gold, Us, Cdc" = "Gold (US CDC)",
         "Miyara, Updated" = "Miyara",
         "De, La, Rica" = "de la Rica",
         "Opensafely, Collaborative" = "The Opensafely Collaborative",
         "Bello, Chavolla" = "Bello-Chavolla",
         "Carrillo, Vega" = "Carillo-Vega",
         "De, Lusignan" = "de Lusignan",
         "Mejia, Vilet" = "Mejia-Vilet",
         "Heili, Frades" = "Heili-Frades",
         "Vaquero, Roncero" = "Vaquero-Roncero",
         "Al, Hindawi" = "Al-Hindawi",
         "Del, Valle" = "del Valle",
         "Soto, Mota" = "Soto-Mota")

a$`Study setting` <-to_title_case(a$`Study setting`, sep_out = " ")
a$`Country` <-to_title_case(a$`Country`, sep_out = " ")
a$`Country` <- a$Country %>%
  recode('Usa' = 'USA',
         'Uk' = 'UK')

numeric_columns <- c('Median (IQR)', 'Female %', 'Current smoker %', 'Current/former smokers %',
                     'Never smokers %', 'Never/unknown smokers %', 'Not stated %', 'Missing %')

a <- flextable(a) %>%
    set_caption(caption = 'Characteristics of included studies') %>%
  colformat_num(col_keys = numeric_columns, digits = 2, na_str = '-', big.mark = ',') %>%
  colformat_num(col_keys = 'Sample size', digits = 0, na_str = '-', big.mark = ',') %>%
  set_table_properties(width = 1, layout = 'autofit')
a
Characteristics of included studies

Study ID

Lead author

Date published

Country

Sample size

Study setting

Median (IQR)

Female %

Current smoker %

Current/former smokers %

Never smokers %

Never/unknown smokers %

Not stated %

Missing %

1

Guan, Ni

2020-02-28

China

1,099

Hospital

47 (35-58)

41.90

12.47

-

84.35

-

-

1.27

2

Guan, Liang

2020-03-26

China

1,590

Hospital

49 (33-64)

42.70

-

6.98

93.02

-

-

-

3

Lian

2020-03-25

China

788

Hospital

NA

38.50

6.85

-

-

-

93.15

-

4

Jin

2020-03-24

China

651

Hospital

46 (32-60)

49.20

6.30

-

-

-

93.70

-

5

Chen

2020-03-26

China

548

Hospital

62 (44-70)

37.60

4.38

-

-

-

93.07

-

6

Zhou, Yu

2020-03-11

China

191

Hospital

56 (46-67)

38.00

5.76

-

-

-

94.24

-

7

Mo

2020-03-16

China

155

Hospital

54 (53-66)

44.50

3.87

-

-

-

96.13

-

8

Zhang, Dong

2020-02-19

China

140

Hospital

57^ (25-87)

46.30

1.43

-

-

-

93.57

-

9

Wan

2020-03-21

China

135

Hospital

47 (36-55)

46.70

6.67

-

-

-

93.33

-

10

Liu, Tao

2020-02-28

China

78

Hospital

38 (33-57)

50.00

-

6.41

-

-

93.59

-

11

Huang, Wang

2020-01-24

China

41

Hospital

49 (41-58)

27.00

7.32

-

-

-

92.68

-

12

Zhang, Cai

2020-03-20

China

645

Hospital

NA

49.10

6.36

-

-

-

93.64

-

13

Guo

2020-03-27

China

187

Hospital

59 (45-73)

51.30

9.63

-

-

-

90.37

-

14

Liu, Ming

2020-03-12

China

41

Hospital

39 (30-48)

58.50

9.76

-

-

-

90.24

-

15

Huang, Yang

2020-03-05

China

36

Hospital

69 (60-78)

30.60

-

11.11

-

-

88.89

-

16

Xu

2020-03-08

China

53

Hospital

NA

47.20

11.32

-

-

-

88.68

-

17

Li

2020-02-12

China

17

Hospital

45 (33-57)

47.10

17.65

-

-

-

82.35

-

18

Rentsch

2020-04-14

USA

3,528

Community and Hospital

66 (60-70)

4.60

27.18

-

36.92

-

-

5.30

19

Hu

2020-03-25

China

323

Hospital

61^ (23-91)

48.60

-

11.76

-

-

88.24

-

20

Wang, Pan

2020-03-24

China

125

Hospital

41 (26-66)

43.20

-

12.80

-

-

87.20

-

22

Petrilli

2020-04-11

USA

4,103

Community and Hospital

52 (36-65)

47.90

5.17

-

-

78.60

-

-

23

Chow (US CDC)

2020-03-31

USA

7,162

Community and Hospital

NA

-

1.34

-

-

-

-

96.36

25

Dong, Cao

2020-03-20

China

9

Hospital

44 (30-46)

66.70

11.11

-

-

-

88.89

-

26

Kim

2020-04-01

Korea

28

Hospital

43 (30-56)

46.40

17.86

-

-

-

78.57

3.57

27

Shi, Yu

2020-03-18

China

487

Hospital

46 (27-65)

46.80

-

8.21

-

-

89.12

2.67

28

Yang, Yu

2020-02-24

China

52

Hospital

60 (47-73)

37.00

3.85

-

-

-

96.15

-

29

Argenziano

2020-04-22

USA

1,000

Hospital

63 (50-75)

40.40

4.90

-

77.20

-

-

-

30

Solis

2020-04-25

Mexico

650

Hospital

46 (NA)

42.10

9.38

-

-

-

90.62

-

31

Richardson

2020-04-22

USA

5,700

Hospital

63 (52-75)

39.70

-

9.79

52.79

-

-

37.42

32

Fontanet

2020-04-23

France

661

Community and Hospital

37 (16-47)

62.00

10.44

-

-

89.56

-

-

33

Zheng, Gao

2020-04-19

China

66

Hospital

47^ (NA)

25.80

12.12

-

-

-

87.88

-

34

Liao, Feng

2020-04-24

China

1,848

Hospital

55 (48-61)

54.70

-

0.43

-

-

7.58

91.99

35

Rodriguez

2020-04-24

Spain

7

Hospital

68 (34-75)

28.60

-

42.86

57.14

-

-

-

36

Magagnoli

2020-04-16

USA

368

Hospital

69 (59-75)

0.00

-

14.13

-

-

85.87

-

37

Shi, Ren

2020-04-23

China

134

Hospital

46 (34-58)

51.50

-

10.45

-

-

89.55

-

38

Hadjadj

2020-04-23

France

50

Hospital

55 (50-63)

22.00

2.00

-

80.00

-

-

-

39

Niedzwiedz

2020-04-30

UK

1,474

Community and Hospital

NA

-

9.98

-

55.04

-

-

0.59

41

Gold (US CDC)

2020-04-20

USA

305

Hospital

NA

50.50

5.25

-

-

-

-

94.75

44

Yu, Cai

2020-04-27

China

95

Hospital

NA

44.21

8.42

-

-

-

91.58

-

45

Zheng, Xiong

2020-04-30

China

73

Hospital

43^ (NA)

45.20

-

10.96

89.04

-

-

-

46

Miyara

2020-05-09

France

479

Community and Hospital

NA

44.70

6.68

-

59.71

-

-

1.88

47

de la Rica

2020-05-11

Spain

48

Hospital

66^ (33-88)

33.00

-

20.83

-

-

77.08

2.08

48

Yin, Yang

2020-05-10

China

106

Hospital

73 (61-85)

39.60

-

16.98

-

-

83.02

-

49

Gaibazzi

2020-05-10

Italy

441

Hospital

71 (62-80)

38.00

4.76

-

85.26

-

-

-

50

Shi, Zuo

2020-05-10

USA

96

Hospital

63^ (44-82)

41.00

-

30.21

-

-

69.79

-

51

Cho

2020-05-11

UK

1,331

Community and Hospital

NA

49.20

19.01

-

54.02

-

-

-

52

Allenbach

2020-05-08

France

152

Hospital

77 (60-83)

31.10

-

6.58

-

-

93.42

-

53

Robilotti

2020-05-08

USA

423

Hospital

NA

50.00

2.13

-

58.63

-

-

1.65

54

The Opensafely Collaborative

2020-05-07

UK

17,425,445

Community and Hospital

NA

50.10

17.00

-

45.91

-

-

4.16

55

Borobia

2020-05-06

Spain

2,226

Hospital

61 (46-78)

52.00

7.05

-

-

-

92.95

-

56

Giacomelli

2020-05-06

Italy

233

Hospital

61 (50-72)

31.90

-

30.04

69.96

-

-

-

57

Shah

2020-05-06

USA

316

Hospital

63 (43-72)

48.10

16.46

-

42.09

-

-

23.73

58

Bello-Chavolla

2020-05-06

Mexico

62,489

Community and Hospital

NA

49.40

-

9.94

-

-

90.06

-

59

Kolin

2020-05-05

UK

1,474

Community and Hospital

58 (49-67)

46.60

14.45

-

44.57

-

-

0.81

60

Lubetzky

2020-05-08

USA

54

Hospital

57 (29-83)

62.00

-

22.22

-

-

77.78

-

61

Goyal

2020-04-17

USA

393

Hospital

62.2 (49-74)

39.30

5.09

-

-

-

94.91

-

62

Feng

2020-04-10

China

476

Hospital

53 (40-64)

43.10

6.51

-

86.13

-

-

4.62

63

Yao

2020-04-24

China

108

Hospital

52 (37-58)

60.20

3.70

-

-

-

-

96.30

64

Sami

2020-05-15

Iran

490

Hospital

56.6 (41-71)

39.00

14.08

-

-

85.92

-

-

65

Almazeedi

2020-05-15

Kuwait

1,096

Hospital

41 (25-57)

19.00

4.01

-

-

95.99

-

-

66

Carillo-Vega

2020-05-14

Mexico

10,544

Community and Hospital

46.5^ (30-62)

42.30

8.88

-

-

-

91.12

-

67

Yanover

2020-05-13

Israel

4,353

Community and Hospital

35 (22-54)

44.50

11.81

-

85.23

-

-

-

68

Hamer

2020-05-13

UK

387,109

Hospital

56.2 (48-64)

55.10

9.67

-

55.50

-

-

-

69

Regina

2020-05-14

Switzerland

200

Hospital

70 (55-81)

40.00

4.50

-

-

-

95.50

-

71

de Lusignan

2020-05-15

UK

3,802

Community

58 (34-73)

57.60

10.86

-

29.59

-

-

13.44

72

Targher

2020-05-13

China

339

Hospital

48.4^ (NA)

52.80

8.26

-

-

-

91.74

-

73

Valenti

2020-05-18

Italy

789

Community

40.7^ (NA)

34.98

25.86

-

-

-

74.14

-

74

Feuth

2020-05-18

Finland

28

Hospital

56 (47-72)

46.00

10.71

-

60.71

-

-

-

75

Heng

2020-05-18

China

51

Hospital

70 (58-79)

27.50

13.73

-

-

-

86.27

-

76

Parrotta

2020-05-18

USA

76

Community and Hospital

44.9 (13-71)

61.80

2.63

-

68.42

-

2.63

-

77

Shekar

2020-05-18

USA

50

Hospital

55.5 (20-85)

54.00

48.00

-

-

-

52.00

-

78

Mejia-Vilet

2020-05-16

Mexico

329

Hospital

49 (41-60)

36.00

-

6.99

-

-

93.01

-

79

Chen, Jiang

2020-05-16

China

135

Hospital

NA

42.20

-

9.63

-

-

90.37

-

80

Jiong

2020-05-16

China

1,008

Hospital

55 (44-65)

43.60

5.65

-

-

-

48.02

46.33

81

Rimland

2020-05-19

USA

11

Hospital

59 (48-65)

18.20

9.09

-

-

-

81.82

-

82

Palaiodimos

2020-05-15

USA

200

Hospital

64 (50-73.5)

51.00

-

32.50

67.50

-

-

-

83

Ip

2020-05-25

USA

2,512

Hospital

64 (52-76)

37.62

3.07

-

64.49

-

-

14.61

84

Heili-Frades

2020-05-25

Spain

4,712

Hospital

62 (47-77)

50.50

4.94

-

-

66.49

-

11.16

85

Vaquero-Roncero

2020-05-24

Spain

146

Hospital

66^ (59-72)

32.20

-

6.85

-

-

93.15

-

86

Kim, Garg

2020-05-22

USA

2,491

Hospital

62 (50-75)

46.80

6.02

-

-

68.13

-

0.08

87

Wu

2020-05-21

Italy

174

Hospital

61.2^ (50-71)

30.46

-

33.33

-

-

66.67

-

88

Hopkinson

2020-05-21

UK

2,401,982

Community

43.6^ (32-55)

63.30

-

10.96

-

-

89.04

-

89

Shi, Zhao

2020-05-20

China

101

Hospital

71 (59-80)

40.60

-

4.95

-

-

95.05

-

90

Kimmig

2020-05-20

USA

60

Hospital

64 (50-68)

41.67

-

36.67

-

-

63.33

-

91

Al-Hindawi

2020-05-20

UK

31

Hospital

61 (NA)

12.90

3.23

-

25.81

-

-

-

92

Basse

2020-05-19

France

141

Hospital

62 (52-72)

72.00

17.73

-

-

-

82.27

-

93

Freites

2020-05-19

Spain

123

Hospital

59.88^ (44-74)

69.92

3.25

-

-

-

96.75

-

94

Alshami

2020-05-19

Saudi Arabia

128

Quarantine Centre

39.6^ (24-55)

53.90

15.62

-

-

-

82.03

-

95

Russell

2020-05-19

UK

106

Hospital

67^ (52-81)

45.30

6.60

-

39.62

-

29.25

-

96

Berumen

2020-05-26

Mexico

102,875

Hospital

NA

49.08

-

9.64

-

90.36

-

-

97

Gianfrancesco

2020-05-29

Multiple

600

Community and Hospital

56 (45-67)

71.00

-

21.50

64.83

-

-

13.67

98

Li, Long

2020-05-28

China

145

Not Stated

49^ (13-80)

61.00

-

5.52

-

-

94.48

-

99

Batty

2020-06-01

UK

908

Hospital

57.27^ (48-66)

44.27

11.23

-

-

-

88.77

-

100

Israel

2020-06-01

Israel

24,087

Community and Hospital

43.4^ (24-62)

48.70

17.08

-

69.88

-

-

-

101

del Valle

2020-05-30

USA

1,484

Hospital

62 (52-72)

40.60

5.53

-

-

-

45.82

25.34

102

Zuo, Zuo

2020-05-29

USA

44

Hospital

57^ (45-69)

18.18

-

27.27

-

-

72.73

-

103

Chaudhry

2020-05-29

USA

40

Community and Hospital

52 (45.5-61)

60.00

-

15.00

-

-

82.50

2.50

104

Louis

2020-06-28

USA

22

Hospital

66.5^ (55-77)

36.40

-

45.45

-

-

54.55

-

105

Soto-Mota

2020-05-27

Mexico

400

Hospital

NA

30.00

-

12.00

-

-

88.00

-

106

Patel

2020-05-26

USA

104

Hospital

60.66^ (47-74)

47.00

41.35

-

-

49.04

-

9.62

107

Garibaldi

2020-05-26

USA

832

Hospital

63 (49-75)

47.00

5.53

-

-

-

71.88

-

108

Docherty

2020-05-22

Multiple

20,133

Hospital

72.9 (58-82)

40.00

4.23

-

44.54

-

-

29.55

109

Boulware

2020-03-06

Multiple

821

Community

40 (33-50)

51.60

3.29

-

-

-

96.71

-

0.5.2 Table 2: Smoking and COVID-19 diagnostic testing

quality_rating <- table_6 %>%
  select(author, 16:17) %>%
  rename('lead_author' = author, 'overall_rating' = 2, 'missingness' = 3) %>%
  clean_data()

#Table 2
table_2_word <-  table_2 %>%
  mutate(., sample = contributing_sample) %>%
  mutate(., negative_test_percentage = negative_test/sample*100,
         negative_current_percentage = negative_current_smoker/negative_test*100,
         negative_former_smoker_percentage = negative_former_smoker/negative_test*100,
         negative_current_former_smoker_percentage = negative_current_former_smoker/negative_test*100,
         negative_never_smoker_percentage = negative_never_smoker/negative_test*100,
         negative_not_stated_percentage = negative_not_stated/negative_test*100, 
         positive_test_percentage = positive_test/sample*100, 
         positive_current_smoker_percentage = positive_current_smoker/positive_test*100,
         positive_former_smoker_percentage = positive_former_smoker/positive_test*100,
         positive_current_former_smoker_percentage = positive_current_former_smoker/positive_test*100, 
         positive_never_smoker_percentage = positive_never_smoker/positive_test*100, 
         positive_not_stated_percentage = positive_not_stated/positive_test*100) %>%
  select(-data_on_testing, -missing, -date_published, -sample) %>%
  write_rds(here::here('data_clean', 'table_2_word.rds'))

quality_table_2 <- table_2_word %>%
  left_join(., quality_rating, by = 'lead_author') %>%
  select(lead_author, overall_rating, missingness) %>%
  mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
  select(lead_author, overall_quality)

a <- table_2_word %>%
  filter(contributing_sample >= 1) %>%
  mutate(Author = lead_author,
         Population_tested = contributing_sample,
         SARS_CoV_2_negative = paste(
           paste(negative_test, 
                 as.integer(negative_test_percentage), sep = " ("), "%)", sep = ""),
         N_current_smoker = paste(paste(negative_current_smoker, as.integer(negative_current_percentage), sep = " (")
                                  , "%)", sep = ""),
         N_current_smoker = na_if(N_current_smoker, "NA (NA%)"),
         N_former_smoker = paste(paste(negative_former_smoker, as.integer(negative_former_smoker_percentage), sep = " (")
                                 , "%)", sep = ""),
         N_former_smoker = na_if(N_former_smoker, "NA (NA%)"),
         N_current_former_smoker = paste(paste(negative_current_former_smoker,
                                               as.integer(negative_current_former_smoker_percentage), sep = " (")
                                         , "%)", sep = ""),
         N_current_former_smoker = na_if(N_current_former_smoker, "NA (NA%)"),
         N_never_smoker = paste(paste(negative_never_smoker,
                                      as.integer(negative_never_smoker_percentage), sep = " (")
                                , "%)", sep = ""),
         N_never_smoker = na_if(N_never_smoker, "NA (NA%)"),
         N_not_stated = paste(paste(negative_not_stated,
                                    as.integer(negative_not_stated_percentage), sep = " (")
                              , "%)", sep = ""),
         N_not_stated = na_if(N_not_stated, "NA (NA%)")) %>%
  mutate(SARS_CoV_2_positive = paste(
    paste(positive_test, 
          as.integer(positive_test_percentage), sep = " ("), "%)", sep = ""),
    P_current_smoker = paste(paste(positive_current_smoker, as.integer(positive_current_smoker_percentage), sep = " (")
                             , "%)", sep = ""),
    P_current_smoker = na_if(P_current_smoker, "NA (NA%)"),
    P_former_smoker = paste(paste(positive_former_smoker,as.integer (positive_former_smoker_percentage), sep = " (")
                            , "%)", sep = ""),
    P_former_smoker = na_if(P_former_smoker, "NA (NA%)"),
    P_current_former_smoker = paste(paste(positive_current_former_smoker,
                                          as.integer(positive_current_former_smoker_percentage), sep = " (")
                                    , "%)", sep = ""),
    P_current_former_smoker = na_if(P_current_former_smoker, "NA (NA%)"),
    P_never_smoker = paste(paste(positive_never_smoker,
                                 as.integer(positive_never_smoker_percentage), sep = " (")
                           , "%)", sep = ""),
    P_never_smoker = na_if(P_never_smoker, "NA (NA%)"),
    P_not_stated = paste(paste(positive_not_stated,
                               as.integer(positive_not_stated_percentage), sep = " (")
                         , "%)", sep = ""),
    P_not_stated = na_if(P_not_stated, "NA (NA%)")) %>%
  select(Author, Population_tested, SARS_CoV_2_negative, N_current_smoker, N_former_smoker, N_current_former_smoker,
         N_never_smoker, N_not_stated, SARS_CoV_2_positive, P_current_smoker, P_former_smoker, P_current_former_smoker,
         P_never_smoker, P_not_stated)

         
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author  <- a$Author  %>%
  recode("Bello, Chavolla" = "Bello-Chavolla",
         "De, Lusignan" = "de Lusignan",
         "Del, Valle" = "del Valle")

numeric_columns <- c('Population_tested', 'SARS_CoV_2_negative', 'N_current_smoker', 'N_former_smoker',
                     'N_current_former_smoker', 'N_never_smoker', 'N_not_stated', 'SARS_CoV_2_positive', 'P_current_smoker',
                     'P_former_smoker', 'P_current_former_smoker', 'P_never_smoker', 'P_not_stated')
a <- flextable(a) %>%
    set_caption(caption = 'SARS-CoV-2 infection by smoking status') %>%
  colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',')

a <- set_header_labels(a,
                       Population_tested = 'Total population tested',
                       SARS_CoV_2_negative = "N (%)",
                       N_current_smoker = "Current smoker (%)",
                       N_former_smoker = "Former smoker (%)",
                       N_current_former_smoker = "Current/former smoker (%)",
                       N_never_smoker = "Never smoker (%)",
                       N_not_stated = "Not stated (%)",
                       SARS_CoV_2_positive = "N (%)",
                       P_current_smoker = "Current smoker (%)",
                       P_former_smoker = "Former smoker (%)",
                       P_current_former_smoker = "Current/former smoker (%)",
                       P_never_smoker = "Never smoker (%)",
                       P_not_stated = "Not stated (%)") %>%
  add_header_row(top = TRUE, values = c("","SARS-CoV-2 negative", "SARS-CoV-2 positive" ), colwidths = c(2, 6, 6)) %>%
  theme_booktabs() %>%
  fix_border_issues() %>%
  set_table_properties(width = 1, layout = 'autofit')
a
SARS-CoV-2 infection by smoking status

SARS-CoV-2 negative

SARS-CoV-2 positive

Author

Total population tested

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Not stated (%)

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Not stated (%)

Rentsch

3,528

2974 (84%)

1444 (48%)

704 (23%)

-

826 (27%)

-

554 (15%)

159 (28%)

179 (32%)

-

216 (38%)

-

Fontanet

661

490 (74%)

64 (13%)

-

-

426 (86%)

-

171 (25%)

5 (2%)

-

-

166 (97%)

-

Cho

1,331

793 (59%)

142 (17%)

214 (26%)

-

437 (55%)

-

538 (40%)

111 (20%)

145 (26%)

-

282 (52%)

-

Shah

243

212 (87%)

52 (24%)

47 (22%)

-

113 (53%)

-

29 (11%)

0 (0%)

9 (31%)

-

20 (68%)

-

Bello-Chavolla

62,489

46960 (75%)

-

-

4835 (10%)

-

42125 (89%)

15529 (24%)

-

-

1374 (8%)

-

14155 (91%)

Kolin

1,474

805 (54%)

141 (17%)

307 (38%)

-

354 (43%)

3 (0%)

669 (45%)

72 (10%)

285 (42%)

-

303 (45%)

9 (1%)

de Lusignan

3,291

2740 (83%)

366 (13%)

1450 (52%)

-

924 (33%)

-

551 (16%)

47 (8%)

303 (54%)

-

201 (36%)

-

Valenti

789

689 (87%)

197 (28%)

-

-

-

492 (71%)

40 (5%)

7 (17%)

-

-

-

33 (82%)

Parrotta

76

39 (51%)

1 (2%)

10 (25%)

-

27 (69%)

1 (2%)

37 (48%)

1 (2%)

10 (27%)

-

25 (67%)

1 (2%)

Hopkinson

26,918

16759 (62%)

-

-

1552 (9%)

-

15207 (90%)

7123 (26%)

-

-

527 (7%)

-

6596 (92%)

Berumen

102,875

71353 (69%)

-

-

7173 (10%)

64180 (89%)

-

31522 (30%)

-

-

2748 (8%)

28774 (91%)

-

Israel

24,087

20076 (83%)

3711 (18%)

2670 (13%)

-

13695 (68%)

-

4011 (16%)

403 (10%)

471 (11%)

-

3137 (78%)

-

del Valle

1,108

143 (12%)

27 (18%)

53 (37%)

-

-

63 (44%)

965 (87%)

55 (5%)

293 (30%)

-

-

617 (63%)

0.5.2.1 Smoking and testing meta-analysis

source(here::here('scripts', 'rr_function.R'))

table_2 <- table_2_word

included_studies <- quality_table_2 %>%
  filter(overall_quality == 'fair') %>%
  select(lead_author)

meta <- tibble('author' = table_2$lead_author,
               'negative_smoker' = table_2$negative_current_smoker,
               'negative_never_smoker' = table_2$negative_never_smoker,
               'positive_smoker' = table_2$positive_current_smoker,
               'positive_never_smoker' = table_2$positive_never_smoker,
               'negative_former_smoker' = table_2$negative_former_smoker,
               'positive_former_smoker' = table_2$positive_former_smoker) %>%
        filter(author %in% included_studies$lead_author)

meta$author <- recode(meta$author, 'rentsch' = 'Rentsch',
                      'cho' = 'Cho',
                      'kolin' = 'Kolin',
                      'de_lusignan' = 'de Lusignan',
                      'parrotta' = 'Parrotta',
                      'israel' = 'Israel')

a <- RR_testing('Rentsch', 'current')
b <- RR_testing('Rentsch', 'former')
c <- RR_testing('Cho', 'current')
d <- RR_testing('Cho', 'former')
e <- RR_testing('Kolin', 'current')
f <- RR_testing('Kolin', 'former')
g <- RR_testing('de Lusignan', 'current')
h <- RR_testing('de Lusignan', 'former')
i <- RR_testing('Parrotta', 'current')
j <- RR_testing('Parrotta', 'former')
k <- RR_testing('Israel', 'current')
l <- RR_testing('Israel', 'former')

data <- list(a,b,c,d,e,f,g,h,i,j,k,l)
k <- do.call(rbind.data.frame, data)

#SEs for Niedzwiedz et al. 2020

#current vs. never

niedz_log_RR_1<-log(1.15)
niedz_log_SE_1<-(log(1.54)-log(0.86))/3.92

k <- k %>%
  add_row(., study = 'Niedzwiedz', smoking_status = 'current', log_RR = niedz_log_RR_1, log_SE = niedz_log_SE_1)
#former vs. never

niedz_log_RR_2<-log(1.42)
niedz_log_SE_2<-(log(1.69)-log(1.19))/3.92

k <- k %>%
  add_row(., study = 'Niedzwiedz', smoking_status = 'former', log_RR = niedz_log_RR_2, log_SE = niedz_log_SE_2)

numbers_in_analysis <- table_2_word %>%
        left_join(., quality_rating, by = 'lead_author') %>%
        filter(., overall_rating != 'poor') %>%
        add_row(lead_author = 'niedzwiedz', contributing_sample = 1474) %>%
        replace_na(list(negative_not_stated = 0, positive_not_stated = 0)) %>%
        mutate(contributing_sample = (contributing_sample - (negative_not_stated+positive_not_stated))) %>%
                       select(lead_author, contributing_sample) %>%
  na.omit()

The studies included in meta-analysis are c(“rentsch”, “niedzwiedz”, “cho”, “kolin”, “de_lusignan”, “parrotta”, “israel”).

  • Current versus never smokers
Current versus never smokers

Current versus never smokers

  • Former versus never smokers
Former versus never smokers

Former versus never smokers

0.5.3 Table 3: Smoking and COVID-19 hospitalisation

#Table 3
table_3_word <- table_3 %>%
  mutate(., sample = sample_with_outcome) %>%
  mutate(., community_percentage = number_community/sample*100) %>%
  mutate(., community_current_smoker_percent = community_current_smoker/number_community*100) %>%
  mutate(., community_former_smoker_percent = community_former_smoker/number_community*100) %>%
  mutate(., community_current_former_smoker_percent = community_current_former_smoker/number_community*100) %>%
  mutate(., community_never_smoker_percent = community_never_smoker/number_community*100) %>%
  mutate(., community_never_unknown_smoker_percent = community_never_unknown_smoker/number_community*100) %>%
  mutate(., community_not_stated_percent = community_not_stated/number_community*100) %>%
  mutate(., number_hospitalised_percent = number_hospitalised/sample*100) %>%
  mutate(., hospitalised_current_smoker_percent = hospitalised_current_smoker/number_hospitalised*100) %>%
  mutate(., hospitalised_former_smoker_percent = hospitalised_former_smoker/number_hospitalised*100) %>%
  mutate(., hospitalised_current_former_smoker_percent = hospitalised_current_former_smoker/number_hospitalised*100) %>%
  mutate(., hospitalised_never_smoker_percent = hospitalised_never_smoker/number_hospitalised*100) %>%
  mutate(., hospitalised_never_unknown_smoker_percent = hospitalised_never_unknown_smoker/number_hospitalised*100) %>%
  mutate(., hospitalised_not_stated_percent = hospitalised_not_stated/number_hospitalised*100) %>%
  select(lead_author, sample_with_outcome, number_community, community_percentage,
         community_current_smoker, community_current_smoker_percent, community_former_smoker, 
         community_former_smoker_percent, community_current_former_smoker,
         community_current_former_smoker_percent, community_never_smoker, community_never_smoker_percent,
         community_never_unknown_smoker, community_never_unknown_smoker_percent, 
         community_not_stated, community_not_stated_percent, number_hospitalised, number_hospitalised_percent,
         hospitalised_current_smoker, hospitalised_current_smoker_percent, hospitalised_former_smoker,
         hospitalised_former_smoker_percent, hospitalised_current_former_smoker, hospitalised_current_former_smoker_percent,
         hospitalised_never_smoker, hospitalised_never_smoker_percent, hospitalised_never_unknown_smoker,
         hospitalised_never_unknown_smoker_percent, hospitalised_not_stated, hospitalised_not_stated_percent) %>%
  write_rds(here::here('data_clean', 'table_3_word.rds'))

quality_table_3 <- table_3_word %>%
  left_join(., quality_rating, by = 'lead_author') %>%
  select(lead_author, overall_rating, missingness) %>%
  mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
  select(lead_author, overall_quality)

a <- table_3_word %>%
  filter(number_community >= 1) %>%
  mutate(Author = lead_author,
         Population = sample_with_outcome,
         Community = paste(
           paste(number_community, 
                 as.integer(community_percentage), sep = " ("), "%)", sep = ""),
         C_current_smoker = paste(paste(community_current_smoker, as.integer(community_current_smoker_percent), sep = " (")
                                  , "%)", sep = ""),
         C_current_smoker = na_if(C_current_smoker, "NA (NA%)"),
         C_former_smoker = paste(paste(community_former_smoker, as.integer(community_former_smoker_percent), sep = " (")
                                 , "%)", sep = ""),
         C_former_smoker = na_if(C_former_smoker, "NA (NA%)"),
         C_current_former_smoker = paste(paste(community_current_former_smoker,
                                               as.integer(community_current_former_smoker_percent), sep = " (")
                                         , "%)", sep = ""),
         C_current_former_smoker = na_if(C_current_former_smoker, "NA (NA%)"),
         C_never_smoker = paste(paste(community_never_smoker,
                                      as.integer(community_never_smoker_percent), sep = " (")
                                , "%)", sep = ""),
         C_never_smoker = na_if(C_never_smoker, "NA (NA%)"),
         C_never_unknown_smoker = paste(paste(community_never_unknown_smoker,
                                              as.integer(community_never_unknown_smoker_percent), sep = " (")
                                        , "%)", sep = ""),
         C_never_unknown_smoker = na_if(C_never_unknown_smoker, "NA (NA%)"),
         C_not_stated = paste(paste(community_not_stated,
                                    as.integer(community_not_stated_percent), sep = " (")
                              , "%)", sep = ""),
         C_not_stated = na_if(C_not_stated, "NA (NA%)")) %>%
  mutate(Hospitalised = paste(
    paste(number_hospitalised, 
          as.integer(number_hospitalised_percent), sep = " ("), "%)", sep = ""),
    H_current_smoker = paste(paste(hospitalised_current_smoker, as.integer(hospitalised_current_smoker_percent), sep = " (")
                             , "%)", sep = ""),
    H_current_smoker = na_if(H_current_smoker, "NA (NA%)"),
    H_former_smoker = paste(paste(hospitalised_former_smoker, as.integer(hospitalised_former_smoker_percent), sep = " (")
                            , "%)", sep = ""),
    H_former_smoker = na_if(H_former_smoker, "NA (NA%)"),
    H_current_former_smoker = paste(paste(hospitalised_current_former_smoker,
                                          as.integer(hospitalised_current_former_smoker_percent), sep = " (")
                                    , "%)", sep = ""),
    H_current_former_smoker = na_if(H_current_former_smoker, "NA (NA%)"),
    H_never_smoker = paste(paste(hospitalised_never_smoker,
                                 as.integer(hospitalised_never_smoker_percent), sep = " (")
                           , "%)", sep = ""),
    H_never_smoker = na_if(H_never_smoker, "NA (NA%)"),
    H_never_unknown_smoker = paste(paste(hospitalised_never_unknown_smoker,
                                         as.integer(hospitalised_never_unknown_smoker_percent), sep = " (")
                                   , "%)", sep = ""),
    H_never_unknown_smoker = na_if(H_never_unknown_smoker, "NA (NA%)"),
    H_not_stated = paste(paste(hospitalised_not_stated,
                               as.integer(hospitalised_not_stated_percent), sep = " (")
                         , "%)", sep = ""),
    H_not_stated = na_if(H_not_stated, "NA (NA%)")) %>%
  select(Author, Population, Community, C_current_smoker, C_former_smoker, C_current_former_smoker,
         C_never_smoker,C_never_unknown_smoker,C_not_stated, Hospitalised, H_current_smoker, H_former_smoker,
         H_current_former_smoker, H_never_smoker, H_never_unknown_smoker, H_not_stated)

         
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author  <- a$Author  %>%
  recode("Chow, Us, Cdc" = "Chow (US CDC)",
         "Miyara, Updated" = "Miyara",
         "Carrillo, Vega" = "Carrillo-Vega",
         "Heili, Frades" = "Heili-Frades")

numeric_columns <- 'Population'

a <- flextable(a) %>%
    set_caption(caption = 'COVID-19 hospitalisation by smoking status') %>%
  colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',') %>%
  colformat_char(na_str = '-')

a <- set_header_labels(a,
                       Population = 'Population with outcome',
                       Community = "N (%)",
                       C_current_smoker = "Current smoker (%)",
                       C_former_smoker = "Former smoker (%)",
                       C_current_former_smoker = "Current/former smoker (%)",
                       C_never_smoker = "Never smoker (%)",
                       C_never_unknown_smoker = "Never/unknown smoker (%)",
                       C_not_stated = "Not stated (%)",
                       Hospitalised = "N (%)",
                       H_current_smoker = "Current smoker (%)",
                       H_former_smoker = "Former smoker (%)",
                       H_current_former_smoker = "Current/former smoker (%)",
                       H_never_smoker = "Never smoker (%)",
                       H_never_unknown_smoker = "Never/unknown smoker (%)",
                       H_not_stated = "Not stated (%)") %>%
  add_header_row(top = TRUE, values = c("","Community", "Hospitalised" ), colwidths = c(2, 7, 7)) %>%
  theme_booktabs() %>%
  fix_border_issues() %>%
  set_table_properties(width = 1, layout = 'autofit')
a
COVID-19 hospitalisation by smoking status

Community

Hospitalised

Author

Population with outcome

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Never/unknown smoker (%)

Not stated (%)

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Never/unknown smoker (%)

Not stated (%)

Rentsch

554

269 (48%)

69 (25%)

90 (33%)

-

110 (40%)

-

-

285 (51%)

90 (31%)

89 (31%)

-

106 (37%)

-

-

Petrilli

4103

2104 (51%)

108 (5%)

250 (11%)

-

-

1746 (82%)

-

1999 (48%)

104 (5%)

416 (20%)

-

-

1479 (73%)

-

Chow (US CDC)

6637

5143 (77%)

61 (1%)

80 (1%)

-

-

-

5002 (97%)

1494 (22%)

27 (1%)

78 (5%)

-

-

-

1389 (92%)

Argenziano

1000

151 (15%)

14 (9%)

18 (11%)

-

119 (78%)

-

-

849 (84%)

35 (4%)

161 (18%)

-

653 (76%)

-

-

Miyara

470

139 (29%)

14 (10%)

41 (29%)

-

77 (55%)

-

7 (5%)

340 (72%)

18 (5%)

111 (32%)

-

209 (61%)

-

2 (0%)

Lubetzky

54

15 (27%)

-

-

4 (26%)

-

-

11 (73%)

39 (72%)

-

-

8 (20%)

-

-

31 (79%)

Carrillo-Vega

9946

3922 (39%)

408 (10%)

-

-

-

-

3514 (89%)

6024 (60%)

486 (8%)

-

-

-

-

5538 (91%)

Yanover

4353

4180 (96%)

484 (11%)

118 (2%)

-

3578 (85%)

-

-

173 (3%)

30 (17%)

11 (6%)

-

132 (76%)

-

-

Hamer

387109

386349 (99%)

37333 (9%)

134542 (34%)

-

214474 (55%)

-

-

760 (0%)

93 (12%)

313 (41%)

-

354 (46%)

-

-

Heili-Frades

4712

1973 (41%)

121 (6%)

222 (11%)

-

-

1630 (82%)

1630 (82%)

2739 (58%)

112 (4%)

598 (21%)

-

-

2029 (74%)

-

Freites

123

69 (56%)

1 (1%)

-

-

-

-

68 (98%)

54 (43%)

3 (5%)

-

-

-

-

51 (94%)

Berumen

102875

18832 (18%)

-

-

1546 (8%)

-

17286 (91%)

-

12690 (12%)

-

-

1202 (9%)

-

11488 (90%)

-

Gianfrancesco

600

323 (53%)

-

-

61 (18%)

-

-

262 (81%)

277 (46%)

-

-

68 (24%)

-

-

209 (75%)

Chaudhry

40

19 (47%)

-

-

0 (0%)

-

-

19 (100%)

21 (52%)

-

-

6 (28%)

-

-

15 (71%)

0.5.3.1 Smoking and hospitalisation meta-analysis

The studies included in meta-analysis are c(“rentsch”, “argenziano”, “miyara_updated”, “yanover”, “hamer”).

# Data --------------------------------------------------------------------
meta <- tibble('author' = table_3$lead_author,
               'community_smoker' = table_3$community_current_smoker,
               'community_never_smoker' = table_3$community_never_smoker, 
               'hospitalised_smoker' = table_3$hospitalised_current_smoker, 
               'hospitalised_never_smoker' = table_3$hospitalised_never_smoker,
               'community_former_smoker' = table_3$community_former_smoker,
               'hospitalised_former_smoker' = table_3$hospitalised_former_smoker) %>%
  filter(author %in% included_studies$lead_author)
  
meta$author <- recode(meta$author, 'rentsch' = 'Rentsch',
                      'argenziano' = 'Argenziano',
                      'miyara_updated' = 'Miyara',
                      'yanover' = 'Yanover',
                      'hamer' = 'Hamer',
                      'heili_frades' = 'Heili-Frades')

# Current smoker hospitalisation ------------------------------------------
event_rates_smoker <- meta %>%
  mutate(., Ee = hospitalised_smoker) %>%
  mutate(., Ne = (hospitalised_smoker+community_smoker)) %>%
  mutate(., Ec = hospitalised_never_smoker) %>%
  mutate(., Nc = (hospitalised_never_smoker+community_never_smoker)) %>%
  rename('Author' = author) %>%
  select(Author, Ee, Ne, Ec, Nc)

event_rates_smoker <- metabin(Ee,
                              Ne,
                              Ec,
                              Nc,
                              data = event_rates_smoker,
                              studlab = paste(Author),
                              comb.fixed = F,
                              comb.random = T,
                              method.tau = 'SJ',
                              hakn = T,
                              prediction = F,
                              incr = 0.1,
                              sm = 'RR')
png(here::here('reports', 'figure', 'fig_5.png'), width=1480, height=546, res=120)
current_smoker_hospitalisation <- forest(event_rates_smoker,
                                sortvar = Author,
                                xlim = c(0.5, 3),
                                rightlabs = c('RR', '95% CI', 'Weight'),
                                leftlabs = c('Author', 'logRR', 'SE'),
                                lab.e = 'Current smoker',
                                lab.c = 'Never smoker',
                                print.tau2 = F,
                                col.diamond = 'blue',
                                col.diamond.lines = 'black',
                                col.square = 'black',
                                col.square.lines = 'black',
                                digits.sd = 2)
null <- dev.off()
Current versus never smokers

Current versus never smokers

Former versus never smokers

Former versus never smokers

0.5.4 Table 4: Smoking and COVID-19 disease severity

#Table 4
table_4_word <- table_4 %>%
  mutate(., sample = sample_with_severity) %>%
  mutate(., non_severe_disease_percentage = non_severe_disease/sample*100) %>%
  mutate(., non_severe_current_smoker_percent = non_severe_current_smoker/non_severe_disease*100) %>%
  mutate(., non_severe_former_smoker_percent = non_severe_former_smoker/non_severe_disease*100) %>%
  mutate(., non_severe_current_former_smoker_percent = non_severe_current_former_smoker/non_severe_disease*100) %>%
  mutate(., non_severe_never_smoker_percent = non_severe_never_smoker/non_severe_disease*100) %>%
  mutate(., non_severe_never_unknown_smoker_percent = non_severe_never_unknown_smoker/non_severe_disease*100) %>%
  mutate(., non_severe_not_stated_percent = non_severe_not_stated/non_severe_disease*100) %>%
  mutate(., severe_disease_number_percent = severe_disease_number/sample*100) %>%
  mutate(., severe_disease_current_smoker_percent = severe_disease_current_smoker/severe_disease_number*100) %>%
  mutate(., severe_disease_former_smoker_percent = severe_disease_former_smoker/severe_disease_number*100) %>%
  mutate(., severe_disease_current_former_smoker_percent = severe_disease_current_former_smoker/severe_disease_number*100) %>%
  mutate(., severe_disease_never_smoker_percent = severe_disease_never_smoker/severe_disease_number*100) %>%
  mutate(., severe_disease_never_unknown_percent = severe_disease_never_unknown/severe_disease_number*100) %>%
  mutate(., severe_disease_not_stated_percent = severe_disease_not_stated/severe_disease_number*100) %>%
  select(lead_author, sample, non_severe_disease, non_severe_disease_percentage, non_severe_current_smoker,
         non_severe_current_smoker_percent, non_severe_former_smoker, non_severe_former_smoker_percent,
         non_severe_current_former_smoker, non_severe_current_former_smoker_percent, non_severe_never_smoker,
         non_severe_never_smoker_percent, non_severe_never_unknown_smoker, non_severe_never_unknown_smoker_percent,
         non_severe_not_stated, non_severe_not_stated_percent, severe_disease_number, severe_disease_number_percent,
         severe_disease_current_smoker, severe_disease_current_smoker_percent, 
         severe_disease_former_smoker, severe_disease_former_smoker_percent, severe_disease_current_former_smoker,
         severe_disease_current_former_smoker_percent, severe_disease_never_smoker, severe_disease_never_smoker_percent,
         severe_disease_never_unknown, severe_disease_never_unknown_percent, severe_disease_not_stated,
         severe_disease_not_stated_percent) %>%
  write_rds(here::here('data_clean', 'table_4_word.rds'))

quality_table_4 <- table_4_word %>%
  left_join(., quality_rating, by = 'lead_author') %>%
  select(lead_author, overall_rating, missingness) %>%
  mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
  select(lead_author, overall_quality)

a <- table_4_word %>%
  filter(non_severe_disease >= 1) %>%
  mutate(Author = lead_author,
         Population = sample,
         non_severe_disease = paste(
           paste(non_severe_disease, 
                 as.integer(non_severe_disease_percentage), sep = " ("), "%)", sep = ""),
         ns_current_smoker = paste(paste(non_severe_current_smoker, as.integer(non_severe_current_smoker_percent), sep = " (")
                                  , "%)", sep = ""),
         ns_current_smoker = na_if(ns_current_smoker, "NA (NA%)"),
         ns_former_smoker = paste(paste(non_severe_former_smoker, as.integer(non_severe_former_smoker_percent), sep = " (")
                                 , "%)", sep = ""),
         ns_former_smoker = na_if(ns_former_smoker, "NA (NA%)"),
         ns_current_former_smoker = paste(paste(non_severe_current_former_smoker,
                                               as.integer(non_severe_current_former_smoker_percent), sep = " (")
                                         , "%)", sep = ""),
         ns_current_former_smoker = na_if(ns_current_former_smoker, "NA (NA%)"),
         ns_never_smoker = paste(paste(non_severe_never_smoker,
                                      as.integer(non_severe_never_smoker_percent), sep = " (")
                                , "%)", sep = ""),
         ns_never_smoker = na_if(ns_never_smoker, "NA (NA%)"),
         ns_never_unknown_smoker = paste(paste(non_severe_never_unknown_smoker,
                                              as.integer(non_severe_never_unknown_smoker_percent), sep = " (")
                                        , "%)", sep = ""),
         ns_never_unknown_smoker = na_if(ns_never_unknown_smoker, "NA (NA%)"),
         ns_not_stated = paste(paste(non_severe_not_stated,
                                    as.integer(non_severe_not_stated_percent), sep = " (")
                              , "%)", sep = ""),
         ns_not_stated = na_if(ns_not_stated, "NA (NA%)"),
         ) %>%
  mutate(severe_disease = paste(
    paste(severe_disease_number, 
          as.integer(severe_disease_number_percent), sep = " ("), "%)", sep = ""),
    s_current_smoker = paste(paste(severe_disease_current_smoker, as.integer(severe_disease_current_smoker_percent), sep = " (")
                             , "%)", sep = ""),
    s_current_smoker = na_if(s_current_smoker, "NA (NA%)"),
    s_former_smoker = paste(paste(severe_disease_former_smoker, as.integer(severe_disease_former_smoker_percent), sep = " (")
                            , "%)", sep = ""),
    s_former_smoker = na_if(s_former_smoker, "NA (NA%)"),
    s_current_former_smoker = paste(paste(severe_disease_current_former_smoker,
                                          as.integer(severe_disease_current_former_smoker_percent), sep = " (")
                                    , "%)", sep = ""),
    s_current_former_smoker = na_if(s_current_former_smoker, "NA (NA%)"),
    s_never_smoker = paste(paste(severe_disease_never_smoker,
                                 as.integer(severe_disease_never_smoker_percent), sep = " (")
                           , "%)", sep = ""),
    s_never_smoker = na_if(s_never_smoker, "NA (NA%)"),
    s_never_unknown_smoker = paste(paste(severe_disease_never_unknown,
                                         as.integer(severe_disease_never_unknown_percent), sep = " (")
                                   , "%)", sep = ""),
    s_never_unknown_smoker = na_if(s_never_unknown_smoker, "NA (NA%)"),
    s_not_stated = paste(paste(severe_disease_not_stated,
                                 as.integer(severe_disease_not_stated_percent), sep = " (")
                           , "%)", sep = ""),
    s_not_stated = na_if(s_not_stated, "NA (NA%)")) %>%
  select(Author, Population, non_severe_disease, ns_current_smoker, ns_former_smoker,
         ns_current_former_smoker, ns_never_smoker, ns_never_unknown_smoker, ns_not_stated,
         severe_disease, s_current_smoker, s_former_smoker, s_current_former_smoker, s_never_smoker, s_never_unknown_smoker,
         s_not_stated)

         
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author  <- a$Author  %>%
  recode("De, La, Rica"  = "de la Rica",
         "Mejia, Vilet" = "Mejia-Vilet",
         "Vaquero, Roncero" = "Vaquero-Roncero")

numeric_columns <- 'Population'

a <- flextable(a) %>%
    set_caption(caption = 'COVID-19 severity by smoking status') %>%
  colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',') %>%
  colformat_char(na_str = '-')

a <- set_header_labels(a,
                       Population = "Population with severity",
                       non_severe_disease = "N (%)",
                       ns_current_smoker = "Current smoker (%)",
                       ns_former_smoker = "Former smoker (%)",
                       ns_current_former_smoker = "Current/former smoker (%)",
                       ns_never_unknown_smoker = "Never/unknown smoker (%)",
                       ns_never_smoker = "Never smoker (%)",
                       ns_not_stated = "Not stated (%)",
                       severe_disease = "N (%)", 
                       s_current_smoker = "Current smoker (%)", 
                       s_former_smoker = "Former smoker (%)", 
                       s_current_former_smoker = "Current/former smoker (%)",
                       s_never_unknown_smoker = "Never/unknown smoker (%)",
                       s_never_smoker = "Never smoker (%)",
                       s_not_stated = "Not stated (%)") %>%
  add_header_row(top = TRUE, values = c("","Non severe disease", "Severe disease" ), colwidths = c(2, 7, 7)) %>%
  theme_booktabs() %>%
  fix_border_issues() %>%
  set_table_properties(width = 1, layout = 'autofit')
a
COVID-19 severity by smoking status

Non severe disease

Severe disease

Author

Population with severity

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Never/unknown smoker (%)

Not stated (%)

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Never/unknown smoker (%)

Not stated (%)

Guan, Ni

1085

913 (84%)

108 (11%)

12 (1%)

-

793 (86%)

-

-

172 (15%)

29 (16%)

9 (5%)

-

134 (77%)

-

-

Zhang, Dong

9

3 (33%)

0 (0%)

3 (100%)

-

0 (0%)

-

-

6 (66%)

2 (33%)

4 (66%)

-

0 (0%)

-

-

Wan

9

8 (88%)

8 (100%)

0 (0%)

-

0 (0%)

-

-

1 (11%)

1 (100%)

0 (0%)

-

0 (0%)

-

-

Huang, Wang

3

3 (100%)

3 (100%)

0 (0%)

-

0 (0%)

-

-

0 (0%)

0 (NA%)

0 (NA%)

-

0 (NA%)

-

-

Rentsch

285

168 (58%)

47 (27%)

53 (31%)

-

68 (40%)

-

-

117 (41%)

43 (36%)

36 (30%)

-

38 (32%)

-

-

Hu

323

151 (46%)

-

-

12 (7%)

-

139 (92%)

-

172 (53%)

-

-

26 (15%)

-

146 (84%)

-

Wang, Pan

125

100 (80%)

-

-

9 (9%)

-

91 (91%)

-

25 (20%)

-

-

7 (28%)

-

18 (72%)

-

Petrilli

1278

932 (72%)

62 (6%)

175 (18%)

-

-

391 (41%)

-

650 (50%)

28 (4%)

145 (22%)

-

-

477 (73%)

-

Kim

27

21 (77%)

3 (14%)

-

-

-

18 (85%)

-

6 (22%)

2 (33%)

0 (0%)

-

-

4 (66%)

-

Shi, Yu

474

425 (89%)

-

-

34 (8%)

-

391 (92%)

-

49 (10%)

-

-

6 (12%)

-

43 (87%)

-

Liao, Feng

148

92 (62%)

-

-

5 (5%)

-

-

87 (94%)

56 (37%)

3 (5%)

-

-

-

-

53 (94%)

Shi, Ren

134

88 (65%)

-

-

8 (9%)

-

-

80 (90%)

46 (34%)

-

-

6 (13%)

-

-

40 (86%)

Hadjadj

50

15 (30%)

1 (6%)

2 (13%)

-

12 (80%)

-

-

35 (70%)

0 (0%)

7 (20%)

-

28 (80%)

-

-

Zheng, Xiong

73

43 (58%)

-

-

6 (13%)

37 (86%)

-

-

30 (41%)

-

-

2 (6%)

28 (93%)

-

-

de la Rica

48

26 (54%)

-

-

6 (23%)

-

-

20 (76%)

20 (41%)

-

-

4 (20%)

-

-

16 (80%)

Yin, Yang

106

47 (44%)

-

-

6 (12%)

-

-

41 (87%)

59 (55%)

-

-

12 (20%)

-

-

47 (79%)

Allenbach

147

100 (68%)

-

-

9 (9%)

-

-

91 (91%)

47 (31%)

-

-

0 (0%)

-

-

47 (100%)

Goyal

393

263 (66%)

14 (5%)

-

-

-

-

249 (94%)

130 (33%)

6 (4%)

-

-

-

-

124 (95%)

Feng

471

352 (74%)

27 (7%)

-

-

-

-

325 (92%)

124 (26%)

17 (13%)

-

-

-

-

107 (86%)

Yao

108

83 (76%)

1 (1%)

-

-

-

-

82 (98%)

25 (23%)

3 (12%)

-

-

-

-

22 (88%)

Sami

490

400 (81%)

53 (13%)

-

-

-

-

347 (86%)

90 (18%)

16 (17%)

-

-

-

-

74 (82%)

Regina

200

163 (81%)

9 (5%)

-

-

-

-

154 (94%)

37 (18%)

0 (0%)

-

-

-

-

37 (100%)

Feuth

28

21 (75%)

1 (4%)

7 (33%)

-

13 (61%)

-

-

7 (25%)

2 (28%)

1 (14%)

-

4 (57%)

-

-

Mejia-Vilet

329

214 (65%)

-

-

13 (6%)

-

-

201 (93%)

115 (34%)

-

-

10 (8%)

-

-

105 (91%)

Chen, Jiang

135

54 (40%)

-

-

4 (7%)

-

-

50 (92%)

81 (60%)

-

-

9 (11%)

-

-

72 (88%)

Vaquero-Roncero

146

75 (51%)

-

-

4 (5%)

-

-

71 (94%)

71 (48%)

-

-

6 (8%)

-

-

65 (91%)

Kim, Garg

2490

1692 (67%)

112 (6%)

395 (23%)

-

-

1185 (70%)

-

798 (32%)

38 (4%)

247 (30%)

-

-

512 (64%)

-

Wu

174

92 (52%)

-

-

47 (51%)

-

45 (48%)

-

82 (47%)

11 (13%)

-

-

-

71 (86%)

-

Russell

106

87 (82%)

6 (6%)

22 (25%)

-

35 (40%)

-

24 (27%)

19 (17%)

1 (5%)

4 (21%)

-

7 (36%)

-

7 (36%)

Chaudhry

40

34 (85%)

-

-

5 (14%)

-

-

29 (85%)

6 (15%)

-

-

1 (16%)

-

-

5 (83%)

Patel

104

67 (64%)

25 (37%)

-

-

-

36 (53%)

6 (8%)

37 (35%)

18 (48%)

-

-

-

15 (40%)

4 (10%)

Garibaldi

832

532 (63%)

25 (4%)

107 (20%)

-

-

-

400 (75%)

300 (36%)

21 (7%)

81 (27%)

-

-

-

198 (66%)

0.5.4.1 Smoking and severity meta-analysis

The studies included in meta-analysis are c(“guan_ni”, “rentsch”, “hadjadj”, “feuth”).

# Data --------------------------------------------------------------------
meta <- tibble('author' = table_4$lead_author,
               'non_severe_smoker' = table_4$non_severe_current_smoker,
               'non_severe_never_smoker' = table_4$non_severe_never_smoker,
               'severe_smoker' = table_4$severe_disease_current_smoker,
               'severe_never_smoker' = table_4$severe_disease_never_smoker,
               'non_severe_former_smoker' = table_4$non_severe_former_smoker,
               'severe_former_smoker' = table_4$severe_disease_former_smoker) %>%
  filter(author %in% included_studies$lead_author)

meta$author <- recode(meta$author, 'rentsch' = 'Rentsch',
                      'guan_ni' = 'Guan, Ni',
                      'hadjadj' = 'Hadjadj',
                      "feuth" = "Feuth")


# Current smoker severity ------------------------------------------
event_rates_smoker <- meta %>%
  mutate(., Ee = severe_smoker) %>%
  mutate(., Ne = (severe_smoker+non_severe_smoker)) %>%
  mutate(., Ec = severe_never_smoker) %>%
  mutate(., Nc = (severe_never_smoker+non_severe_never_smoker)) %>%
  rename('Author' = author) %>%
  select(Author, Ee, Ne, Ec, Nc)

event_rates_smoker <- metabin(Ee,
                              Ne,
                              Ec,
                              Nc,
                              data = event_rates_smoker,
                              studlab = paste(Author),
                              comb.fixed = T,
                              comb.random = F,
                              method.tau = 'SJ',
                              hakn = F,
                              prediction = F,
                              incr = 0.1,
                              sm = 'RR')
png(here::here('reports', 'figure', 'fig_7.png'), width=1024, height=546, res=120)
current_smoker_severity <- forest(event_rates_smoker,
                                         sortvar = Author,
                                         xlim = c(0.1, 5),
                                         rightlabs = c('RR', '95% CI', 'Weight'),
                                         leftlabs = c('Author', 'logRR', 'SE'),
                                         lab.e = 'Current smoker',
                                         lab.c = 'Never smoker',
                                         print.tau2 = F,
                                         col.diamond = 'blue',
                                         col.diamond.lines = 'black',
                                         col.square = 'black',
                                         col.square.lines = 'black',
                                         digits.sd = 2)
null <- dev.off()
Current versus never smokers

Current versus never smokers

Former versus never smokers

Former versus never smokers

0.5.5 Table 5: Smoking and COVID-19 mortality

#Table 5
table_5_word <- table_5 %>%
  mutate(., sample = sample_with_deaths) %>%
  mutate(., deaths_percentage = deaths/sample*100) %>%
  mutate(., death_current_smokers_percent = death_current_smokers/deaths*100) %>%
  mutate(., death_former_smokers_percent = death_former_smokers/deaths*100) %>%
  mutate(., death_current_former_smokers_percent = death_current_former_smokers/deaths*100) %>%
  mutate(., death_never_smokers_percent = death_never_smokers/deaths*100) %>%
  mutate(., death_never_unknown_smokers_percent = death_never_unknown_smokers/deaths*100) %>%
  mutate(., death_not_stated_percent = death_not_stated/deaths*100) %>%
  mutate(., recovered_percentage = recovered/sample*100) %>%
  mutate(., recovered_current_smokers_percent = recovered_current_smoking/recovered*100) %>%
  mutate(., recovered_former_smokers_percent = recovered_former_smoker/recovered*100) %>%
  mutate(., recovered_current_former_smokers_percent = recovered_current_former_smokers/recovered*100) %>%
  mutate(., recovered_never_smokers_percent = recovered_never_smoker/recovered*100) %>%
  mutate(., recovered_never_unknown_smokers_percent = recovered_never_unknown_smoker/recovered*100) %>%
  mutate(., recovered_not_stated_percent = recovered_not_stated/recovered*100) %>%
  select(lead_author, sample, recovered, recovered_percentage, recovered_current_smoking, recovered_current_smokers_percent,
         recovered_former_smoker, recovered_former_smokers_percent, recovered_current_former_smokers,
         recovered_current_former_smokers_percent, recovered_never_smoker, recovered_never_smokers_percent,
         recovered_never_unknown_smoker, recovered_never_unknown_smokers_percent, recovered_not_stated,
         recovered_not_stated_percent,
         deaths, deaths_percentage, death_current_smokers, death_current_smokers_percent,
         death_former_smokers, death_former_smokers_percent, death_current_former_smokers,
         death_current_former_smokers_percent, death_never_smokers, death_never_smokers_percent,
         death_never_unknown_smokers, death_never_unknown_smokers_percent, death_not_stated, death_not_stated_percent) %>%
  write_rds(here::here('data_clean', 'table_5_word.rds'))

quality_table_5 <- table_5_word %>%
  left_join(., quality_rating, by = 'lead_author') %>%
  select(lead_author, overall_rating, missingness) %>%
  mutate(overall_quality = ifelse(overall_rating != 'poor' & missingness < 20, 'fair', 'poor')) %>%
  select(lead_author, overall_quality)

a <- table_5_word %>%
  filter(recovered >= 1) %>%
  mutate(Author = lead_author,
         Population = sample,
         recovered = paste(
           paste(recovered, 
                 as.integer(recovered_percentage), sep = " ("), "%)", sep = ""),
         recovered_current_smoker = paste(paste(recovered_current_smoking, 
                                                 as.integer(recovered_current_smokers_percent), sep = " (")
                                  , "%)", sep = ""),
         recovered_current_smoker = na_if(recovered_current_smoker, "NA (NA%)"),
         recovered_former_smoker = paste(paste(recovered_former_smoker,
                                               as.integer(recovered_former_smokers_percent), sep = " (")
                                 , "%)", sep = ""),
         recovered_former_smoker = na_if(recovered_former_smoker, "NA (NA%)"),
         recovered_current_former_smoker = paste(paste(recovered_current_former_smokers,
                                               as.integer(recovered_current_former_smokers_percent), sep = " (")
                                         , "%)", sep = ""),
         recovered_current_former_smoker = na_if(recovered_current_former_smoker, "NA (NA%)"),
         recovered_never_smoker = paste(paste(recovered_never_smoker,
                                      as.integer(recovered_never_smokers_percent), sep = " (")
                                , "%)", sep = ""),
         recovered_never_smoker = na_if(recovered_never_smoker, "NA (NA%)"),
         recovered_never_unknown_smoker = paste(paste(recovered_never_unknown_smoker,
                                              as.integer(recovered_never_unknown_smokers_percent), sep = " (")
                                        , "%)", sep = ""),
         recovered_never_unknown_smoker = na_if(recovered_never_unknown_smoker, "NA (NA%)"),
         recovered_not_stated = paste(paste(recovered_not_stated,
                                    as.integer(recovered_not_stated_percent), sep = " (")
                              , "%)", sep = ""),
         recovered_not_stated = na_if(recovered_not_stated, "NA (NA%)")) %>%
  mutate(deaths = paste(
           paste(deaths, 
                 as.integer(deaths_percentage), sep = " ("), "%)", sep = ""),
         death_current_smoker = paste(paste(death_current_smokers, 
                                                 as.integer(death_current_smokers_percent), sep = " (")
                                  , "%)", sep = ""),
         death_current_smoker = na_if(death_current_smoker, "NA (NA%)"),
         death_former_smoker = paste(paste(death_former_smokers,
                                               as.integer(death_former_smokers_percent), sep = " (")
                                 , "%)", sep = ""),
         death_former_smoker = na_if(death_former_smoker, "NA (NA%)"),
         death_current_former_smoker = paste(paste(death_current_former_smokers,
                                               as.integer(death_current_former_smokers_percent), sep = " (")
                                         , "%)", sep = ""),
         death_current_former_smoker = na_if(death_current_former_smoker, "NA (NA%)"),
         death_never_smoker = paste(paste(death_never_smokers,
                                      as.integer(death_never_smokers_percent), sep = " (")
                                , "%)", sep = ""),
         death_never_smoker = na_if(death_never_smoker, "NA (NA%)"),
         death_never_unknown_smoker = paste(paste(death_never_unknown_smokers,
                                              as.integer(death_never_unknown_smokers_percent), sep = " (")
                                        , "%)", sep = ""),
         death_never_unknown_smoker = na_if(death_never_unknown_smoker, "NA (NA%)"),
         death_not_stated = paste(paste(death_not_stated,
                                    as.integer(death_not_stated_percent), sep = " (")
                              , "%)", sep = ""),
         death_not_stated = na_if(death_not_stated, "NA (NA%)")) %>%
  select(Author, Population, recovered, recovered_current_smoker, recovered_former_smoker, recovered_current_former_smoker,
         recovered_never_smoker, recovered_never_unknown_smoker, recovered_not_stated, deaths, death_current_smoker,
         death_former_smoker, death_current_former_smoker, death_never_smoker, death_never_unknown_smoker,
         death_not_stated)

         
a$Author <- to_upper_camel_case(a$Author, sep_out = ", ")
a$Author  <- a$Author  %>%
  recode("Carrillo, Vega"  = "Carillo-Vega",
         "Heili, Frades" = "Heili-Frades",
         "Al, Hindawi" = "Al-Hindawi",
         "Soto, Mota" = "Soto-Mota")

numeric_columns <- 'Population'

a <- flextable(a) %>%
    set_caption(caption = 'COVID-19 mortality by smoking status') %>%
  colformat_num(col_keys = numeric_columns, digits = 0, na_str = '-', big.mark = ',') %>%
  colformat_char(na_str = '-')

a <- set_header_labels(a,
                       Population = "Population with mortality",
                       recovered = "N (%)",
                       recovered_current_smoker = "Current smoker (%)",
                       recovered_former_smoker = "Former smoker (%)",
                       recovered_current_former_smoker = "Current/former smoker (%)",
                       recovered_never_unknown_smoker = "Never/unknown smoker (%)",
                       recovered_never_smoker = "Never smoker (%)",
                       recovered_not_stated = "Not stated (%)",
                       deaths = "N (%)", 
                       death_current_smoker = "Current smoker (%)", 
                       death_former_smoker = "Former smoker (%)", 
                       death_current_former_smoker = "Current/former smoker (%)",
                       death_never_unknown_smoker = "Never/unknown smoker (%)",
                       death_never_smoker = "Never smoker (%)",
                       death_not_stated = "Not stated (%)") %>%
  add_header_row(top = TRUE, values = c("","Recovered", "Died" ), colwidths = c(2, 7, 7)) %>%
  theme_booktabs() %>%
  fix_border_issues() %>%
  set_table_properties(width = 1, layout = 'autofit')
a
COVID-19 mortality by smoking status

Recovered

Died

Author

Population with mortality

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Never/unknown smoker (%)

Not stated (%)

N (%)

Current smoker (%)

Former smoker (%)

Current/former smoker (%)

Never smoker (%)

Never/unknown smoker (%)

Not stated (%)

Chen

274

161 (58%)

5 (3%)

5 (3%)

-

-

-

151 (93%)

113 (41%)

7 (6%)

2 (1%)

-

-

-

104 (92%)

Zhou, Yu

191

137 (71%)

6 (4%)

-

-

-

-

131 (95%)

54 (28%)

5 (9%)

-

-

-

-

49 (90%)

Yang, Yu

52

20 (38%)

2 (10%)

-

-

-

18 (90%)

-

32 (61%)

-

-

-

-

32 (100%)

-

Gaibazzi

441

285 (64%)

11 (3%)

30 (10%)

-

244 (85%)

-

-

156 (35%)

10 (6%)

14 (8%)

-

132 (84%)

-

-

Borobia

2226

1766 (79%)

113 (6%)

-

-

-

-

1653 (93%)

460 (20%)

44 (9%)

-

-

-

-

416 (90%)

Giacomelli

233

185 (79%)

-

-

53 (28%)

132 (71%)

-

-

48 (20%)

-

-

17 (35%)

31 (64%)

-

0 (0%)

Yao

108

96 (88%)

1 (1%)

-

-

-

-

95 (98%)

12 (11%)

3 (25%)

-

-

-

-

9 (75%)

Carillo-Vega

9946

8983 (90%)

795 (8%)

-

-

-

-

8188 (91%)

963 (9%)

99 (10%)

-

-

-

-

864 (89%)

Heng

51

39 (76%)

6 (15%)

-

-

-

-

33 (84%)

12 (23%)

1 (8%)

-

-

-

-

11 (91%)

Heili-Frades

4712

4086 (86%)

210 (5%)

659 (16%)

-

-

3217 (78%)

-

626 (13%)

23 (3%)

161 (25%)

-

-

442 (70%)

-

Kim, Garg

2490

2070 (83%)

128 (6%)

481 (23%)

-

-

1461 (70%)

-

420 (16%)

22 (5%)

161 (38%)

-

-

236 (56%)

-

Al-Hindawi

31

15 (48%)

0 (0%)

10 (66%)

-

5 (33%)

-

-

16 (51%)

1 (6%)

12 (75%)

-

3 (18%)

-

-

Louis

22

16 (72%)

-

-

7 (43%)

-

-

9 (56%)

6 (27%)

-

-

3 (50%)

-

-

3 (50%)

Soto-Mota

400

200 (50%)

-

-

23 (11%)

-

-

177 (88%)

200 (50%)

-

-

25 (12%)

-

-

175 (87%)

Garibaldi

747

634 (84%)

36 (5%)

129 (20%)

-

-

-

469 (73%)

113 (15%)

6 (5%)

36 (31%)

-

-

-

71 (62%)

Docherty

13364

8199 (61%)

370 (4%)

1832 (22%)

-

4179 (50%)

-

1818 (22%)

5165 (38%)

214 (4%)

1350 (26%)

-

2105 (40%)

-

1496 (28%)

0.5.5.1 Smoking and COVID-19 mortality meta-analysis

The studies included in meta-analysis are c(“gaibazzi”, “al_hindawi”).

# Data --------------------------------------------------------------------
meta <- tibble('author' = table_5$lead_author,
               'recovered_current_smoker' = table_5$recovered_current_smoking,
               'recovered_never_smoker' = table_5$recovered_never_smoker,
               'death_current_smoker' = table_5$death_current_smokers,
               'death_never_smoker' = table_5$death_never_smokers,
               'recovered_former_smoker' = table_5$recovered_former_smoker,
               'death_former_smoker' = table_5$death_former_smokers) %>%
  filter(author %in% included_studies$lead_author)

meta$author <- recode(meta$author, 'gaibazzi' = 'Gaibazzi',
                      'al_hindawi' = 'Al-Hindawi')


# Current smoker mortality ------------------------------------------
event_rates_smoker <- meta %>%
  mutate(., Ee = death_current_smoker) %>%
  mutate(., Ne = (death_current_smoker+recovered_current_smoker)) %>%
  mutate(., Ec = death_never_smoker) %>%
  mutate(., Nc = (death_never_smoker+recovered_never_smoker)) %>%
  rename('Author' = author) %>%
  select(Author, Ee, Ne, Ec, Nc)

event_rates_smoker <- metabin(Ee,
                              Ne,
                              Ec,
                              Nc,
                              data = event_rates_smoker,
                              studlab = paste(Author),
                              comb.fixed = T,
                              comb.random = F,
                              method.tau = 'SJ',
                              hakn = F,
                              prediction = F,
                              incr = 0.1,
                              sm = 'RR')
png(here::here('reports', 'figure', 'fig_9.png'), width=1024, height=546, res=120)
current_smoker_mortality <- forest(event_rates_smoker,
                                         sortvar = Author,
                                         xlim = c(0.1, 5),
                                         rightlabs = c('RR', '95% CI', 'Weight'),
                                         leftlabs = c('Author', 'logRR', 'SE'),
                                         lab.e = 'Current smoker',
                                         lab.c = 'Never smoker',
                                         print.tau2 = F,
                                         col.diamond = 'blue',
                                         col.diamond.lines = 'black',
                                         col.square = 'black',
                                         col.square.lines = 'black',
                                         digits.sd = 2)
null <- dev.off()
Current versus never smokers

Current versus never smokers

Former versus never smokers

Former versus never smokers

0.5.6 Study quality assessment

Table 6
guan_ni Yes No No Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 1.2738854
guan_liang Yes No No Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Poor 0.0000000
lian Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine No No Not applicable No Poor 93.1472081
jin Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.7019969
chen Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.0656934
zhou_yu Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 94.2408377
mo Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 96.1290323
zhang_dong Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.5714286
wan Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.3333333
liu_tao Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.5897436
huang_wang Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 92.6829268
zhang_cai Yes No Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.6434109
guo Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 90.3743316
liu_ming Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 90.2439024
huang_yang Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 88.8888889
xu Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 88.6792453
li Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 82.3529412
rentsch Yes Yes Yes Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable Yes Fair 5.2991453
hu Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Fair 88.2352941
wang_pan Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 87.2000000
chow_us_cdc Yes Yes No Cannot determine No Cannot determine Cannot determine No No Cannot determine No No Not applicable No Poor 96.3557665
petrilli Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Poor 0.0000000
dong_cao No No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 88.8888889
kim Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 82.1428571
shi_yu Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 91.7864476
yang_yu Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 96.1538462
argenziano Yes Yes Yes Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 0.0000000
solis Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 90.6153846
richardson Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 37.4210526
fontanet Yes Yes Yes Yes No No Cannot determine No No No Yes No Not applicable No Poor 0.0000000
zheng_gao Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 87.8787879
liao_feng Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 99.5670996
rodriguez Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Yes No Poor 0.0000000
magagnoli Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 85.8695652
shi_ren Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 89.5522388
hadjadj Yes No Cannot determine Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 0.0000000
niedzwiedz Yes Yes Yes Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable Yes Fair 0.5917450
gold_us_cdc Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 94.7540984
yu_cai Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 91.5789474
zheng_xiong Yes No Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Poor 0.0000000
miyara_updated Yes Yes Yes Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 1.8789144
de_la_rica Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 79.1666667
yin_yang Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 83.0188679
gaibazzi Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable Yes Fair 0.0000000
shi_zuo Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 69.7916667
cho Yes Yes Cannot determine Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable Yes Fair 0.0000000
allenbach Yes Yes Cannot determine Yes No No Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.4210526
robilotti Yes No Yes Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 1.6548463
opensafely_collaborative Yes No Yes Cannot determine No Cannot determine Cannot determine Yes No Cannot determine Yes Yes Not applicable Yes Fair 4.1624360
borobia Yes Yes Yes Cannot determine No No Cannot determine No No Cannot determine Yes No Not applicable No Poor 92.9469901
giacomelli Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 0.0000000
shah Yes Yes Cannot determine Yes No Cannot determine Cannot determine Yes No Cannot determine Yes Yes Not applicable No Fair 23.7341772
bello_chavolla Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 90.0638512
kolin Yes Yes Cannot determine Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 0.8141113
lubetzky Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 77.7777778
goyal Yes Yes Yes Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 94.9109415
feng Yes Yes Yes Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 4.6218487
yao Yes Yes Yes Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 96.2962963
sami Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 0.0000000
almazeedi Yes Yes Yes Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Poor 0.0000000
carillo_vega Yes Yes Yes Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Poor NA
yanover Yes Yes Yes Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable Yes Fair 0.0000000
hamer Yes No Cannot determine Yes No Cannot determine Cannot determine Yes Yes Cannot determine No No Not applicable No Fair 0.0000000
regina Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable Yes Poor 95.5000000
de_lusignan Yes Yes Cannot determine Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable Yes Fair 13.4402946
targher Yes Yes Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 91.7404130
valenti Yes No Cannot determine Yes No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 74.1444867
feuth Yes Yes Yes Yes No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 0.0000000
heng Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 86.2745098
parrotta Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 2.6315789
shekar Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 52.0000000
mejia_vilet Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.0091185
chen_jiang Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 90.3703704
jiong Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 94.3452381
rimland Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 81.8181818
palaiodimos Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 0.0000000
ip Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 14.6098726
heili_frades Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 11.1629881
vaquero_roncero Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 93.1506849
kim_garg Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 0.0802890
wu Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 66.6666667
hopkinson Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 89.0400095
shi_zhao Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 95.0495050
kimmig Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 63.3333333
al_hindawi Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 0.0000000
basse Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 82.2695035
freites Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 96.7479675
alshami Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 82.0312500
russell Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes No Cannot determine Yes No Not applicable No Poor 29.2452830
berumen Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 0.0000000
gianfrancesco Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 13.6666667
li_long Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 94.4827586
batty Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 88.7665198
israel Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes Yes Cannot determine Yes No Not applicable No Fair 0.0000000
del_valle Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine Yes No Cannot determine Yes No Not applicable No Poor 71.1590296
zuo_zuo Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 72.7272727
chaudhry Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 85.0000000
louis Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 54.5454545
soto_mota Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 88.0000000
patel Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 9.6153846
garibaldi Yes Yes Cannot determine Cannot determine No Cannot determine Cannot determine No No Cannot determine Yes No Not applicable No Poor 71.8750000
docherty Yes Yes Cannot determine Cannot determine No Yes Cannot determine Yes No Cannot determine Yes No Not applicable Yes Poor 29.5485025
boulware NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 96.7113276